package com.google.code.solrdimension.indexmodifiers;

import java.util.Map;

import org.apache.solr.common.SolrInputDocument;

import com.google.code.solrdimension.config.dimensionvalue.AbstractDimensionValueConfig;

public class IndexModServiceImpl implements IndexModService {

    
    /**
     * Map of fully qualified DimensionValueConfig className and instance of indexModAction
     */
    private Map<String, IndexModAction> dimensionValueConfig2IndexModActionMap;

    public IndexModAction getIndexModAction(AbstractDimensionValueConfig dimensionValueConfig) {
        return dimensionValueConfig2IndexModActionMap.get(dimensionValueConfig.getClass().getName());
    }
   
    public boolean modifyIndex(AbstractDimensionValueConfig config, SolrInputDocument inputDoc, Object objectToIndex, String field) {
        return getIndexModAction(config).execute(config, inputDoc, objectToIndex);
    }
   
    
    /**
     * this is injected by spring config
     * @param dimensionValueConfig2IndexModActionMap
     */
    public void setDimensionValueConfig2IndexModActionMap(Map<String, IndexModAction> dimensionValueConfig2IndexModActionMap) {
        this.dimensionValueConfig2IndexModActionMap = dimensionValueConfig2IndexModActionMap;
    }

    

}
